(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

网络配置

Description: 配置好XBot-U与你电脑之间的网络连接

Tutorial Level: BEGINNER

您的个人计算机通常可以通过“SSH连接”和“ROS主从机配置”两种方式控制XBot机器人,这两种方法各有用途。

“SSH连接”是linux系统的功能,其安装和使用就不一一详述。

“ROS主从机配置”即为ros计算机分布式主从通信,是需要安装ros环境之后才能配置。

两者在命令的层级上就不一样,ssh是linux的底层通信,ros主从机通信是ros主机和从机通过订阅话题和服务实现的,其使用的前提是主机的ros必须启动。

关于两者使用的区别,用户可以自己去尝试和查询资料。关于其他的ROS网络的配置教程,请参考ROS官方wiki社区

不管何种方式连接机器人,操作机器人的第一步就是开机。启动机器人后,机器人会启动随身WIFI。请在PC上链接WIFI热点:xbot-network-*,其中后面的*是机器人的网络唯一编号(编号在机器人底盘上二维码处可见),初始密码:xbot1234。

通过SSH远程连接到机器人

SSH是一种较为常用的远程登录方式,基础格式为:ssh <主机用户>@<主机IP地址>

想通过个人PC远程控制主机,那么我们需要在个人PC上打开一个终端,并输入:

$ ssh xbot@192.168.8.101

@符号之前是主机的用户名,@符号之后是主机的IP地址。按照机器人出厂设置,用户名默认为xbot,主机IP地址为192.168.8.101

接着,终端会提示输入密码:

xbot@192.168.8.101's password: 

此时,需要输入xbot的主机密码即可。这里密码输入后不会有任何显示,输入完成直接按回车键即可。

ssh

ssh远程登录成功后,可以看到如上图所示的信息。尤其最为关键的是看最下面一行的绿色字体部分(表示“用户@机器名”),已经由个人PC电脑的用户名和机器名(xj@xj-Thinkpad-T470p)变成主机的用户名和机器名(xbot@xbot),这是最为重要的ssh登录成功的验证手段。

以上方式为最简单的ssh登录,每次新打开一个终端,都需要输入该命令和密码。为了简化操作,您还可以通过配置ssh的公钥私钥来设置免密码登录。有兴趣可自行了解。

此外,在连接机器人的过程中,我们有时会需要打开图形界面,此时我们可以通过-X(X大写)打开图形界面:

$ ssh -X xbot@192.168.8.101

个人PC通过ssh连接机器人主机成功之后,就可以像在主机上一样,键入任何命令来操作机器人了。

ROS主从环境配置

ROS的主从环境其实是一种分布式通信方式。这里我们讲述ROS主从环境的配置步骤:

IP与Hostname

启动机器人后,机器人会启动随身WIFI,在PC上链接机器人WIFI。

首先,使用下面的命令,分别在XBot与您PC上执行,获取xbot主机和您PC的IP地址:

$ ifconfig

ifconfig

XBot-U机器人主机的默认IP已在出厂时设定为192.168.8.101。

类似的,您的PC端也会显示出一个IP地址,应注意,在查看PC端IP时,请务必保证您的PC已经连接上了XBot机器人的wifi,同时,为避免以后每次都要重新查看ip,可先配置固定IP。

接下来。我们使用下面指令,分别来获取您PC与XBot的hostname。

$ hostname

nuc为xbot的hostname,您也可以直接查看终端标题栏“@”后面的内容来获得hostname。(说明:不同的机器人可能设置存在差异,请按照查询得到的hostname设置)

=== 修改host文件===

host文件位于etc文件夹下,修改hosts文件的目的是将两电脑的ip和主机名绑定,使两台电脑可以通过hostname就能很方便的找到对方。在您修改host文件之前,直接ping 对方主机名,是无法解析的。当然,即便不配置,您也可以直接ping 对方的IP地址。但为了方便后续的操作,我们还是建议将IP与hostname绑定起来。

由于电脑上的 hosts文件是只读文件,直接修改后是保存不了的。因此先用root方式对该文件属性进行修改。此时我们需要用到gksu软件,如果您的电脑还没有安装gksu,请先连接外网,并使用下面的命令安装gtsu:

$ sudo apt-get install gksu

安装时可能会提示输入密码以获取权限,请注意键入密码时终端上并不会显示。

安装完gksu后,我们使用如下命令打开gksu文件,并对其进行修改:

$ gksu gedit /etc/hosts

以PC端为例进行说明,打开的hosts文件如下:

hosts

可以看到,在hosts文件内开头两行,已经绑定了两个IP,因此我们从第三行开始,插入刚刚查到的两组的IP地址和hostname.

应注意,IP与hostname中间要用tab键隔开,而不能使用空格。

保存修改后,退出host文件,使用下方命令重启网络:

$ sudo /etc/init.d/networking restart

XBot端的设置过程与PC端相同,注意不要忘记重启网络。 == PC端与XBot-U端通信测试 ===

在开始配置主从关系之前,先测试一下两台机器之间是否能够正常通信。在这里可以使用ping指令,首先测试从XBot端到PC端的连通。在XBot的终端里输入:

 $ ping wxy-TM1705

可以看到:

ping

此处wxy-TM1705是演示用PC端的hostname,您可以换成您之前设置的PC端hostname。相似的,从PC端到XBot端测试时,在PC端输入。

 $ ping nuc

如下图:

pingnuc

其中,nuc为Xbot机器人的hostname。

全部连通后,可以开始配置主从关系。

配置主从关系

在这里,我们设置Xbot为主机,PC端为从机。

首先在XBot的终端上输入:

 $ gedit ~/.bashrc

该指令打开.bashrc文件,如果文件中存在之前的配置,我们先将其注释掉,然后加入:export ROS_MASTER_URI=http://nuc:11311 语句,保存退出,并在终端上输入:

 $ source ~/.bashrc

XBot上配置完毕。

在PC端上,我们也使用同样命令打开.bashrc文件,如果存在之前的配置,则先将其注释掉。,再加入:export ROS_MASTER_URI=http://nuc:11311 语句。保存退出后,在终端输入:

 $ source ~/.bashrc

PC端配置完毕。

此时,主从关系已经全部配置完毕。我们可在XBot端启动ROS节点,然后再PC端上使用rostopic list查看相关话题,如果能够看到终端返回相关话题,则说明配置成功。返回的topic(部分)见下图:

pingnuc

主从关系测试

在这里我们使用ROS自带的小乌龟来测试一下主从关系配置后情况。

首先。我们在XBot端(主机端)启动ROS Master与乌龟仿真节点,在终端输入:

 $ rosrun turtlesim turtlesim_node

然后,我们在PC端(从机端)发布一个速度控制的指令:

 $ rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist 
"linear:  x: 0.5 
y: 0.0 
z: 0.0 
angular: x: 0.0 
y: 0.0 
z: 0.5"

上述指令在输入时,可以使用Tab键进行命令补全,尤其是"linear之后参数部分,在输入"之后,建议用Tab键补全,然 后移动光标修改相关参数。参数修改完成后回车即可执行命令。

此时我们可以看到主机上的海龟模拟器中的海龟在做圆周运动,说明主从关系配置成功,测试完毕。

需要注意的是,配置好主从关系后,是要共用主机端上的Master,因此首先主机上的master需要启动。在从机端可以查看到主机端上的节点与话题。除了以上网络配置,ros的主从机配置还需要配置从机的工作空间环境(catkin_ws),即您的个人计算机上下载和编译XBot的功能包,并配置工作空间。

多个ROS设备联机配置也可参考ROS多机联动配置教程

在从机上部署xbot功能包

如上一节中所说,为了能够在从机上控制机器人,我们需要在您的个人计算机上部署与XBot机器人相同的工作空间。 在PC上打开终端,新建工作空间caktin_ws并对它初始化

$ mkdir -p catkin_ws/src
# cd catkin_ws
$ catkin_make

初始化完成后,下载解压或者克隆xbot功能包到catkin_ws/src下

$ cd  ~/catkin_ws/src
$ git clone https://github.com/DroidAITech/xbot.git

接着,我们要安装所有与功能包相关的依赖。

$ cd  ~/catkin_ws
$ rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y

最后编译工作空间。

$ cd  ~/catkin_ws
$ catkin_make
        catkin_make有时候如果我们需要单独编译某个功能包,我们也可以使用指令:
$ catkin_make --pkg package_name

其中,package_name是要单独编译的功能包的名字。当您直接使用catkin_make指令不能通过编译时,可以使用该指令来排查不能通过编译的功能包。 在xbot系列包中,当直接catkin_make出现问题的时候,请按照以下顺序编译:

$ catkin_make --pkg xbot_msgs
$ catkin_make --pkg xbot_talker
$ catkin_make --pkg xbot_face
$ catkin_make --pkg xbot_navi
$ catkin_make

接下来

Wiki: cn/Robots/Xbot/tutorial/Network Configuration (last edited 2021-01-02 07:07:24 by yakamoz423)